/**

* Definition for singly-linked list.

* struct ListNode {

* int val;

* ListNode *next;

* ListNode(int x) : val(x), next(NULL) {}

* };

*/

class Solution {

public:

ListNode\* addTwoNumbers\(ListNode\* l1, ListNode\* l2\) {

    int flag=0;int temp;

    ListNode \*head,\*p;

    head= new ListNode\(0\); p=head;



    while\(l1!=NULL\){

       if\(l2!=NULL\){

           temp=l1->val+l2->val+flag;

           ListNode \*s=new ListNode\(0\);

           if\(temp>=10\)

            {

              s->val=temp-10;

              flag=1;}

           else{

               s->val=temp;

               flag=0;}

           p->next=s;

           p=s;

           l1=l1->next;l2=l2->next;

       }

    else{

        temp=l1->val+flag;

        ListNode \*s=new ListNode\(0\);

        if\(temp>=10\){

            s->val=temp-10;

            flag=1;

        }

        else{

            s->val=temp;

            flag=0;

        }

        p->next=s;

        p=s;l1=l1->next;

    }

    }



while\(l2!=NULL\){

    temp=l2->val+flag;

    ListNode \*s=new ListNode\(0\);

    if\(temp>=10\){

            s->val=temp-10;

            flag=1;

        }

        else{

            s->val=temp;

            flag=0;

        }

        p->next=s;

        p=s;

    l2=l2->next;

}

if\(l1==NULL && l2==NULL && flag==1\){

    ListNode \*s=new ListNode\(0\);

    s->val=flag;

    flag=0;

    p->next=s;

    p=s;

}

    head=head->next;

    p->next=NULL;



    return head;

}

};

总结:

1.C++ 新建节点:new node(0),后面的0一定不能省。

2.考虑如果5+5=10这样的情况

3.链表添加节点的套路:

struct node{

   int val;

   node \*next;

}

node *create(){

 node \*head,\*p;

head= new node\(0\); p=head;

while\(...\){

   node \*s=new node;

   s-val=123;

   p->next=s;

  p=s;

}

head=head->next;

p->next=NULL;

return head;

}

results matching ""

    No results matching ""